// i.d(t, { C: () => GestureEvent })
import InputEvent from "./InputEvent"
export default class GestureEvent extends InputEvent {
  position: THREE.Vector2
  clientPosition: THREE.Vector2
  buttons: number
  delta: any
  progress: any
  cancelled: any
  button: number
  pinchDelta: any
  timeSinceLastMove: any
  rotateDelta: any
  pointer: any
  fullDelta: any
  pointers: any
  pointerCount: number
}
export class LongPressMoveEvent extends GestureEvent {
  constructor(position: THREE.Vector2, clientPosition: THREE.Vector2, delta: any, buttons: number) {
    super()
    this.position = position
    this.clientPosition = clientPosition
    this.delta = delta
    this.buttons = buttons
  }
}
export class LongPressProgressEvent extends GestureEvent {
  constructor(position, clientPosition, delta: any, buttons: number, progress: any) {
    super()
    this.position = position
    this.clientPosition = clientPosition
    this.delta = delta
    this.buttons = buttons
    this.progress = progress
  }
}
export class LongPressStartEvent extends GestureEvent {
  constructor(position, clientPosition, buttons: number) {
    super()
    this.position = position
    this.clientPosition = clientPosition
    this.buttons = buttons
  }
}
export class LongPressSuccessEvent extends GestureEvent {
  constructor(position, clientPosition) {
    super()
    this.position = position
    this.clientPosition = clientPosition
  }
}
export class LongPressEndEvent extends GestureEvent {
  constructor(position, clientPosition, cancelled: any) {
    super()
    this.position = position
    this.clientPosition = clientPosition
    this.cancelled = cancelled
  }
}
export class ClickCancelEvent extends GestureEvent {
  constructor(position, buttons: number) {
    super()
    this.position = position
    this.buttons = buttons
  }
}
export class ClickEvent extends GestureEvent {
  constructor(position, button: number) {
    super()
    this.position = position
    this.button = button
  }
}
export class PinchEvent extends GestureEvent {
  constructor(pinchDelta: any) {
    super()
    this.pinchDelta = pinchDelta
  }
}
export class PinchEndEvent extends GestureEvent {
  constructor(pinchDelta: any, timeSinceLastMove: any) {
    super()
    this.pinchDelta = pinchDelta
    this.timeSinceLastMove = timeSinceLastMove
  }
}
export class RotateEvent extends GestureEvent {
  constructor(rotateDelta: any) {
    super()
    this.rotateDelta = rotateDelta
  }
}
export class RotateEndEvent extends GestureEvent {
  constructor(rotateDelta: any, timeSinceLastMove: any) {
    super()
    this.rotateDelta = rotateDelta
    this.timeSinceLastMove = timeSinceLastMove
  }
}
export class MultiSwipeEvent extends GestureEvent {
  constructor(pointerCount: number, position: any, delta: any) {
    super()
    this.pointerCount = pointerCount
    this.position = Object.assign({}, position)
    this.delta = Object.assign({}, delta)
  }
}
export class MultiSwipeEndEvent extends GestureEvent {
  constructor(pointerCount: number, position: any, delta: any, timeSinceLastMove: any) {
    super()
    this.pointerCount = pointerCount
    this.position = Object.assign({}, position)
    this.delta = Object.assign({}, delta)
    this.timeSinceLastMove = timeSinceLastMove
  }
}
export class HoverEvent extends InputEvent {
  constructor() {
    super(...arguments)
    this.type = "hover"
  }
}
export class UnhoverEvent extends InputEvent {
  constructor() {
    super(...arguments)
    this.type = "unhover"
  }
}
